
package pooproj.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ResourceBundle;
import pooproj.erro.ConexaoException;

/**
 *
 * @author Daniella
 */
public class GerenciadorConexaoImpl implements GerenciadorConexao {

    private String driver;
    private String local;
    private String usuario;
    private String senha;
    private String banco;
    private static GerenciadorConexao instancia;
    
    /**
     * singleton para gerar uma instância do tipo GerenciadorConexao
     * @return instancia
     */
    public static GerenciadorConexao getInstancia(){
        if(instancia==null){
            instancia=new GerenciadorConexaoImpl();
        }
            return instancia;
        
    }
    
    /**
     * Construtor privado da classe
     * indica arquivo .properties com informações para conexão ao bd
     * sem retorno
     */
    private GerenciadorConexaoImpl(){
        ResourceBundle rb = ResourceBundle.getBundle("pooproj.util.banco");
        driver = rb.getString("driver");
        local = rb.getString("local");
        usuario = rb.getString("usuario");
        senha = rb.getString("senha");
        banco = rb.getString("banco");
    }
    
    @Override
    public Connection conectar() throws ConexaoException {
        Connection con = null;
        
        try{
            Class.forName(driver);
            con = DriverManager.getConnection(local+banco,usuario,senha); 
        } catch (SQLException | ClassNotFoundException e){
            throw new ConexaoException(e.getMessage());
        }
        return con;
    }

    @Override
    public void desconectar(Connection con) throws ConexaoException {
        try{
            con.close();
        } catch (SQLException e){
            throw new ConexaoException(e.getMessage());
        }
    }
    
}
